Serveur d'exploration sur la recherche en informatique en Lorraine

Attention, ce site est en cours de développement !
Attention, site généré par des moyens informatiques à partir de corpus bruts.
Les informations ne sont donc pas validées.

Towards the uniform implementation of declarative languages

Identifieur interne : 00BB19 ( Main/Exploration ); précédent : 00BB18; suivant : 00BB20

Towards the uniform implementation of declarative languages

Auteurs : Manuel M. T. Chakravarty [Japon] ; Hendrik C. R. Lock [Allemagne]

Source :

RBID : ISTEX:BD450B596E4EBA7E8487E037B0D99F8CF0882BD8

English descriptors

Abstract

Abstract: Current implementation techniques for functional languages differ considerably from those for logic languages. This complicates the development of flexible and efficient abstract machines that can be used for the compilation of declarative languages combining concepts of functional and logic programming. We propose an abstract machine, called the JUMP-machine, which systematically integrates the operational concepts needed to implement the functional and logic programming paradigm. The use of a tagless representation for heap objects, which originates from the Spineless Tagless G-machine, supports the integration of different concepts. In this paper, we provide a functional logic kernel language and show how to translate it into the abstract machine language of the JUMP-machine. Furthermore, we define the operational semantics of the machine language formally and discuss the mapping of the abstract machine to concrete machine architectures. We tested the approach by writing a compiler for the functional logic language GTML. The obtained performance results indicate that the proposed method allows to implement functional logic languages efficiently.

Url:
DOI: 10.1016/S0096-0551(97)00012-X


Affiliations:


Links toward previous steps (curation, corpus...)


Le document en format XML

<record>
<TEI wicri:istexFullTextTei="biblStruct">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Towards the uniform implementation of declarative languages</title>
<author>
<name sortKey="Chakravarty, Manuel M T" sort="Chakravarty, Manuel M T" uniqKey="Chakravarty M" first="Manuel M. T." last="Chakravarty">Manuel M. T. Chakravarty</name>
</author>
<author>
<name sortKey="Lock, Hendrik C R" sort="Lock, Hendrik C R" uniqKey="Lock H" first="Hendrik C. R." last="Lock">Hendrik C. R. Lock</name>
</author>
</titleStmt>
<publicationStmt>
<idno type="wicri:source">ISTEX</idno>
<idno type="RBID">ISTEX:BD450B596E4EBA7E8487E037B0D99F8CF0882BD8</idno>
<date when="1997" year="1997">1997</date>
<idno type="doi">10.1016/S0096-0551(97)00012-X</idno>
<idno type="url">https://api.istex.fr/ark:/67375/6H6-B5NPBD3D-8/fulltext.pdf</idno>
<idno type="wicri:Area/Istex/Corpus">002C95</idno>
<idno type="wicri:explorRef" wicri:stream="Istex" wicri:step="Corpus" wicri:corpus="ISTEX">002C95</idno>
<idno type="wicri:Area/Istex/Curation">002C58</idno>
<idno type="wicri:Area/Istex/Checkpoint">002651</idno>
<idno type="wicri:explorRef" wicri:stream="Istex" wicri:step="Checkpoint">002651</idno>
<idno type="wicri:doubleKey">0096-0551:1997:Chakravarty M:towards:the:uniform</idno>
<idno type="wicri:Area/Main/Merge">00C296</idno>
<idno type="wicri:Area/Main/Curation">00BB19</idno>
<idno type="wicri:Area/Main/Exploration">00BB19</idno>
</publicationStmt>
<sourceDesc>
<biblStruct>
<analytic>
<title level="a">Towards the uniform implementation of declarative languages</title>
<author>
<name sortKey="Chakravarty, Manuel M T" sort="Chakravarty, Manuel M T" uniqKey="Chakravarty M" first="Manuel M. T." last="Chakravarty">Manuel M. T. Chakravarty</name>
<affiliation wicri:level="1">
<country xml:lang="fr">Japon</country>
<wicri:regionArea>Institute of Information Sciences and Electronics, University of Tsukuba, Tsukuba 305</wicri:regionArea>
<wicri:noRegion>Tsukuba 305</wicri:noRegion>
</affiliation>
<affiliation wicri:level="1">
<country wicri:rule="url">Japon</country>
</affiliation>
</author>
<author>
<name sortKey="Lock, Hendrik C R" sort="Lock, Hendrik C R" uniqKey="Lock H" first="Hendrik C. R." last="Lock">Hendrik C. R. Lock</name>
<affiliation wicri:level="3">
<country xml:lang="fr">Allemagne</country>
<wicri:regionArea>Fakultät für Informatik, TH Karlsruhe, 76128 Karlsruhe</wicri:regionArea>
<placeName>
<region type="land" nuts="1">Bade-Wurtemberg</region>
<region type="district" nuts="2">District de Karlsruhe</region>
<settlement type="city">Karlsruhe</settlement>
</placeName>
</affiliation>
</author>
</analytic>
<monogr></monogr>
<series>
<title level="j">Computer Languages</title>
<title level="j" type="abbrev">CL</title>
<idno type="ISSN">0096-0551</idno>
<imprint>
<publisher>ELSEVIER</publisher>
<date type="published" when="1997">1997</date>
<biblScope unit="volume">23</biblScope>
<biblScope unit="issue">2–4</biblScope>
<biblScope unit="page" from="121">121</biblScope>
<biblScope unit="page" to="160">160</biblScope>
</imprint>
<idno type="ISSN">0096-0551</idno>
</series>
</biblStruct>
</sourceDesc>
<seriesStmt>
<idno type="ISSN">0096-0551</idno>
</seriesStmt>
</fileDesc>
<profileDesc>
<textClass>
<keywords scheme="Teeft" xml:lang="en">
<term>Abstract machine</term>
<term>Abstract machine model</term>
<term>Abstract machines</term>
<term>Abstraction level</term>
<term>Activation frame</term>
<term>Active object</term>
<term>Active object referenced</term>
<term>Active objects</term>
<term>Additional argument</term>
<term>Algebraic data types</term>
<term>Alt</term>
<term>Alternative computations</term>
<term>Alternative expressions</term>
<term>Appropriate alternative</term>
<term>Aquarius</term>
<term>Aquarius prolog</term>
<term>Argument expression</term>
<term>Argument expressions</term>
<term>Argument stack</term>
<term>Argument values</term>
<term>Argument variables</term>
<term>Arity</term>
<term>Assembler code</term>
<term>Available arguments</term>
<term>Backtracking</term>
<term>Behaviour</term>
<term>Benchmark</term>
<term>Benchmarking implementations</term>
<term>Body expression</term>
<term>Caller</term>
<term>Cant</term>
<term>Case analysis</term>
<term>Case expression</term>
<term>Case expressions</term>
<term>Case selection</term>
<term>Chakravarty</term>
<term>Chakravartyand hendrick</term>
<term>Chakravartyand hendrickc</term>
<term>Choice point</term>
<term>Choice point stack</term>
<term>Choice points</term>
<term>Choices statement</term>
<term>Choices statements</term>
<term>Closure</term>
<term>Code block</term>
<term>Code blocks</term>
<term>Code component</term>
<term>Code form</term>
<term>Code generation</term>
<term>Code generator</term>
<term>Code pointer</term>
<term>Compilation scheme</term>
<term>Compiler</term>
<term>Computer science</term>
<term>Concrete architecture</term>
<term>Concrete architectures</term>
<term>Concrete implementation</term>
<term>Concrete machine architecture</term>
<term>Concrete machine architectures</term>
<term>Constraint</term>
<term>Constraint solver</term>
<term>Continuation argument</term>
<term>Copy propagation</term>
<term>Correct alternative</term>
<term>Curr_cp</term>
<term>Current state</term>
<term>Currying</term>
<term>Data object</term>
<term>Data object representation</term>
<term>Data objects</term>
<term>Data representations</term>
<term>Data structure</term>
<term>Data structures</term>
<term>Data terms</term>
<term>Data type</term>
<term>Declarative languages</term>
<term>Derivation relation</term>
<term>Design space</term>
<term>Different concepts</term>
<term>Different kinds</term>
<term>Disjunction</term>
<term>Efficient implementations</term>
<term>Efficient treatment</term>
<term>Environment arguments</term>
<term>Environment variables</term>
<term>Equality predicate</term>
<term>Equality type</term>
<term>Equality type variables</term>
<term>Equality types</term>
<term>Evaluation code</term>
<term>Evaluation method</term>
<term>Exec</term>
<term>Existential quantification</term>
<term>First argument</term>
<term>Foldr</term>
<term>Form mode</term>
<term>Formal arguments</term>
<term>Formal definition</term>
<term>Free variables</term>
<term>Function applications</term>
<term>Function type</term>
<term>Functional language</term>
<term>Functional languages</term>
<term>Functional logic kernel language</term>
<term>Functional logic language</term>
<term>Functional logic language gtml</term>
<term>Functional logic languages</term>
<term>Functional logic programming</term>
<term>Functional logic programs</term>
<term>Functional part</term>
<term>Functional programming</term>
<term>Functions currying</term>
<term>Funnoupd</term>
<term>Garbage collection</term>
<term>General notion</term>
<term>General unification</term>
<term>Glasgow haskell compiler</term>
<term>Global environment</term>
<term>Gtml</term>
<term>Gtml compiler</term>
<term>Haskell</term>
<term>Heap objects</term>
<term>Helpful comments</term>
<term>Hendrick</term>
<term>Identifier</term>
<term>Implementation</term>
<term>Implementation techniques</term>
<term>Impure features</term>
<term>Inference rules</term>
<term>Information sciences</term>
<term>Innermost strategy</term>
<term>Intermediate code</term>
<term>Intermediate values</term>
<term>Intermediate variables</term>
<term>Jcode</term>
<term>Jcode statement</term>
<term>Jump instruction</term>
<term>Jvars</term>
<term>Kernel</term>
<term>Kernel language</term>
<term>Keywords switch</term>
<term>Lagic programming</term>
<term>Language babel</term>
<term>Last alternative</term>
<term>Lazy evaluation</term>
<term>Lazy evaluation strategy</term>
<term>Less arguments</term>
<term>Lncs</term>
<term>Local bindings</term>
<term>Local context</term>
<term>Local environment</term>
<term>Local value definitions</term>
<term>Logic</term>
<term>Logic computations</term>
<term>Logic features</term>
<term>Logic language</term>
<term>Logic languages</term>
<term>Logic programming</term>
<term>Logic programming languages</term>
<term>Logic programs</term>
<term>Logic rogramming</term>
<term>Logic semantics</term>
<term>Logical variables</term>
<term>Lvar</term>
<term>Lvar slot</term>
<term>Machine code</term>
<term>Machine state</term>
<term>Memory requirements</term>
<term>Method table</term>
<term>Method tables</term>
<term>Minimal core</term>
<term>Mode parameter</term>
<term>More detail</term>
<term>Next alternative</term>
<term>Noupd</term>
<term>Operational behaviour</term>
<term>Operational concepts</term>
<term>Operational semantics</term>
<term>Optimization</term>
<term>Optimization level</term>
<term>Original object</term>
<term>Other term</term>
<term>Parallel implementation</term>
<term>Partial application</term>
<term>Partial data</term>
<term>Partial data structure</term>
<term>Partial data structures</term>
<term>Performance results</term>
<term>Peyton</term>
<term>Peyton jones</term>
<term>Pointer</term>
<term>Postdoc position</term>
<term>Predicate</term>
<term>Predicate definitions</term>
<term>Programming</term>
<term>Programming language implementation</term>
<term>Programming languages</term>
<term>Prolog</term>
<term>Proper arguments</term>
<term>Prototypical compiler</term>
<term>Referenced</term>
<term>Result value</term>
<term>Retlvar</term>
<term>Return address</term>
<term>Return continuation</term>
<term>Return continuations</term>
<term>Return instructions</term>
<term>Return operation</term>
<term>Return stack</term>
<term>Return vector</term>
<term>Return vectors</term>
<term>Rule choice point</term>
<term>Rule choice points</term>
<term>Rule selection</term>
<term>Second rule</term>
<term>Self reference</term>
<term>Semantics</term>
<term>Sigplan notices</term>
<term>Single argument</term>
<term>Special case</term>
<term>Special code form</term>
<term>Special interest</term>
<term>Special kind</term>
<term>Specific language</term>
<term>Specific task</term>
<term>Spineless tagless</term>
<term>Springer</term>
<term>Stack</term>
<term>Stack pointer</term>
<term>Statement list</term>
<term>Statement sequence</term>
<term>Static analysis</term>
<term>Stgm</term>
<term>Straightforward optimizations</term>
<term>Strict evaluation</term>
<term>Strong typing</term>
<term>Suspension object</term>
<term>Switch instructions</term>
<term>Switch statement</term>
<term>Syntactic</term>
<term>Syntactic form</term>
<term>Tagless</term>
<term>Tagless approach</term>
<term>Technical report university</term>
<term>Term alternative</term>
<term>Term alternatives</term>
<term>Terminal symbols</term>
<term>Topmost</term>
<term>Topmost choice point</term>
<term>Topmost return continuation</term>
<term>Transition rules</term>
<term>Transition system</term>
<term>Translation rules</term>
<term>Translation schemes</term>
<term>Trybind</term>
<term>Type expressions</term>
<term>Type variables</term>
<term>Unboxed values</term>
<term>Unevaluated expressions</term>
<term>Unification</term>
<term>Unification method</term>
<term>Unification operation</term>
<term>Unified terms</term>
<term>Uniform implementation</term>
<term>Uniform implementationof declarativelanguages</term>
<term>Uniform representation</term>
<term>Value definition</term>
<term>Value definitions</term>
<term>Value type declaration</term>
<term>Variable</term>
<term>Variable choice point</term>
<term>Variable choice points</term>
<term>Variable identifiers</term>
<term>Variable names</term>
<term>Variable pattern</term>
<term>Vectored returns</term>
<term>Weak head</term>
<term>Workshopon implementations</term>
</keywords>
</textClass>
<langUsage>
<language ident="en">en</language>
</langUsage>
</profileDesc>
</teiHeader>
<front>
<div type="abstract" xml:lang="en">Abstract: Current implementation techniques for functional languages differ considerably from those for logic languages. This complicates the development of flexible and efficient abstract machines that can be used for the compilation of declarative languages combining concepts of functional and logic programming. We propose an abstract machine, called the JUMP-machine, which systematically integrates the operational concepts needed to implement the functional and logic programming paradigm. The use of a tagless representation for heap objects, which originates from the Spineless Tagless G-machine, supports the integration of different concepts. In this paper, we provide a functional logic kernel language and show how to translate it into the abstract machine language of the JUMP-machine. Furthermore, we define the operational semantics of the machine language formally and discuss the mapping of the abstract machine to concrete machine architectures. We tested the approach by writing a compiler for the functional logic language GTML. The obtained performance results indicate that the proposed method allows to implement functional logic languages efficiently.</div>
</front>
</TEI>
<affiliations>
<list>
<country>
<li>Allemagne</li>
<li>Japon</li>
</country>
<region>
<li>Bade-Wurtemberg</li>
<li>District de Karlsruhe</li>
</region>
<settlement>
<li>Karlsruhe</li>
</settlement>
</list>
<tree>
<country name="Japon">
<noRegion>
<name sortKey="Chakravarty, Manuel M T" sort="Chakravarty, Manuel M T" uniqKey="Chakravarty M" first="Manuel M. T." last="Chakravarty">Manuel M. T. Chakravarty</name>
</noRegion>
<name sortKey="Chakravarty, Manuel M T" sort="Chakravarty, Manuel M T" uniqKey="Chakravarty M" first="Manuel M. T." last="Chakravarty">Manuel M. T. Chakravarty</name>
</country>
<country name="Allemagne">
<region name="Bade-Wurtemberg">
<name sortKey="Lock, Hendrik C R" sort="Lock, Hendrik C R" uniqKey="Lock H" first="Hendrik C. R." last="Lock">Hendrik C. R. Lock</name>
</region>
</country>
</tree>
</affiliations>
</record>

Pour manipuler ce document sous Unix (Dilib)

EXPLOR_STEP=$WICRI_ROOT/Wicri/Lorraine/explor/InforLorV4/Data/Main/Exploration
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 00BB19 | SxmlIndent | more

Ou

HfdSelect -h $EXPLOR_AREA/Data/Main/Exploration/biblio.hfd -nk 00BB19 | SxmlIndent | more

Pour mettre un lien sur cette page dans le réseau Wicri

{{Explor lien
   |wiki=    Wicri/Lorraine
   |area=    InforLorV4
   |flux=    Main
   |étape=   Exploration
   |type=    RBID
   |clé=     ISTEX:BD450B596E4EBA7E8487E037B0D99F8CF0882BD8
   |texte=   Towards the uniform implementation of declarative languages
}}

Wicri

This area was generated with Dilib version V0.6.33.
Data generation: Mon Jun 10 21:56:28 2019. Site generation: Fri Feb 25 15:29:27 2022